Cloud-based services are continuing to gain in popularity. More and more applications are being implemented as cloud-based services, which makes the applications easily available to a large number of users. Cloud-based services are typically deployed via a data center, which may house any number of cloud-based services for any number of service providers. In developing a cloud-based service, a service provider may specify various rules and requirements for the service. The service provider may contact a data center provider to request that the service be implemented. A data center typically includes multiple servers, each of which may include any number of virtual machines. Deploying a cloud-based service is a complex process in which consideration must be given to the various rules and requirements of each service that is hosted, while satisfying various service level agreements, and preferably minimizing cost and resource allocation.